/*******************************************************************************
 * Copyright (c) 2002 IBM Corporation and others.
 * All rights reserved.   This program and the accompanying materials
 * are made available under the terms of the Common Public License v0.5
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v05.html
 * 
 * Contributors:
 * IBM - Initial API and implementation
 * Boris Pruessmann - Cleanup, documentation
 ******************************************************************************/
package net.sourceforge.perforce.ui;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.eclipse.swt.graphics.Image;

/** Maintains a cache of OverlayIcons.
  *
  * @version $Revision: 67 $
  * @author IBM
  * @author  <a href="mailto:bpruessmann@users.sourceforge.net">Boris Pruessmann</a>
  */
public class OverlayIconCache 
{
	// --------------------------------------------------------------------------- Private Variables
	
	/** Map that contains the cached data. */
	private Map cache = new HashMap();
	
	// ------------------------------------------------------------------------------ Public Methods
	
	/** Returns the Image for the given icon. First, tries to locate in the cache.
	  *
	  * @param icon the icon.
	  * @return the image. 
	  */
	public Image getImageFor(OverlayIcon icon) 
	{
		Image image = (Image) cache.get(icon);
		if (image == null) 
		{
			image = icon.createImage();
			cache.put(icon, image);
		}
		
		return image;
	}
	
	/** Disposes of all images in the cache. */
	public void disposeAll() 
	{
		for (Iterator it = cache.values().iterator(); it.hasNext();) 
		{
			Image image = (Image) it.next();
			image.dispose();
		}
		cache.clear();
	}
}

